﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Domain;
using Business;
using System.Configuration;

using System.Web.Configuration;

namespace HotelBrisayArena
{
    public partial class ReservaEnLinea : System.Web.UI.Page
    {
        TipoHabitacionBusiness tipoHabBusiness = new TipoHabitacionBusiness(WebConfigurationManager.ConnectionStrings["ApplicationServices"].ToString());
        LinkedList<TipoHabitacion> tipoHabitaciones = new LinkedList<TipoHabitacion>();
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {

                tipoHabitaciones = tipoHabBusiness.ObtenerTiposDeHabitacion();
                if (Page.IsPostBack == false)
                {
                    //codigo para cargar el DropDtipoHabitacionesownList
                    foreach (TipoHabitacion tipoActual in tipoHabitaciones)
                    {
                        ListItem li = new ListItem(tipoActual.Tipo, tipoActual.IdTipoHab.ToString());
                        DropDownList3.Items.Add(li);
                    }
                   
                    DropDownList3.SelectedIndex = DropDownList3.Items.Count - 1;


                }//fin del if 
            }
        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            try
            {
                HabitacionBusiness habitacionBusiness = new HabitacionBusiness(WebConfigurationManager.ConnectionStrings["ApplicationServices"].ToString());
                TipoHabitacionBusiness tipoHabitacionBusiness = new TipoHabitacionBusiness(WebConfigurationManager.ConnectionStrings["ApplicationServices"].ToString());
                DetalleReservacion detalleReservacion = new DetalleReservacion();
                Reservacion reservacion = new Reservacion();
                String valorEntrada = Request["fechaLlegada"];
                String valorSalida = Request["fechaSalida"];
                DateTime fechaLlegada = DateTime.Parse(valorEntrada);
                DateTime fechaSalida = DateTime.Parse(valorSalida);
                DateTime fecHoy = DateTime.Today;
                if ((DateTime.Compare(fecHoy,fechaLlegada) == -1))
                {

                if ((DateTime.Compare(fechaLlegada, fechaSalida) == -1))
                {
                    LinkedList<Habitacion> habitaciones = habitacionBusiness.ObtenerHabitacionXId(Int32.Parse(DropDownList3.SelectedItem.Value.ToString()));

                    Habitacion habitacionPosibilidad = habitacionBusiness.PosibilidadDeReservar(habitaciones, fechaLlegada, fechaSalida);

                    if (habitacionPosibilidad.IdHabitacion != 0)
                    {
                        detalleReservacion.FechaLlegada = fechaLlegada;
                        detalleReservacion.FechaSalida = fechaSalida;
                        detalleReservacion.TotalPago = tipoHabitacionBusiness.ObtenerTipoHabitacion(habitacionPosibilidad.TipoHabitacion.IdTipoHab).Tarifa;

                        reservacion.IdHabitacion = habitacionPosibilidad.IdHabitacion;
                        reservacion.DetalleReservacion = detalleReservacion;
                        Session["reservacion"] = reservacion;
                        Response.Redirect("RegistroReservacion.aspx");

                    }
                    else
                    {
                        Label1.Text = "Su reservacion no puede ser procesada en este momento por que el tipo de habitacion no esta disponible";
                    }//Else
                }//If
                else
                {
                    Label1.Text = "Fechas Incorrectas, por favor ingreselas en orden";
                }
                 }  else{
                     Label1.Text = "INGRESE LAS FECHAS AL DIA DE HOY!!!!";
               }
            }
            catch (FormatException)
            {
                Label1.Text = "Ingrese los parametros por favor, NO LOS DEJE EN BLANCO!!!";
            }//Catch  
        }

        protected void DropDownList3_SelectedIndexChanged(object sender, EventArgs e)
        {
            //try
            //{
            //    HabitacionBusiness habitacionBusiness = new HabitacionBusiness(WebConfigurationManager.ConnectionStrings["ApplicationServices"].ToString());
            //    TipoHabitacionBusiness tipoHabitacionBusiness = new TipoHabitacionBusiness(WebConfigurationManager.ConnectionStrings["ApplicationServices"].ToString());
            //    DetalleReservacion detalleReservacion = new DetalleReservacion();
            //    Reservacion reservacion = new Reservacion();
            //    String valorEntrada = Request["fechaLlegada"];
            //    String valorSalida = Request["fechaSalida"];
            //    DateTime fechaLlegada = DateTime.Parse(valorEntrada);
            //    DateTime fechaSalida = DateTime.Parse(valorSalida);
            //    if ((DateTime.Compare(fechaLlegada, fechaSalida) == -1))
            //    {
            //        LinkedList<Habitacion> habitaciones = habitacionBusiness.ObtenerHabitacionXId(Int32.Parse(DropDownList3.SelectedItem.Value.ToString()));

            //        Habitacion habitacionPosibilidad = habitacionBusiness.PosibilidadDeReservar(habitaciones, fechaLlegada, fechaSalida);

            //        if (habitacionPosibilidad.IdHabitacion != 0)
            //        {
            //            detalleReservacion.FechaLlegada = fechaLlegada;
            //            detalleReservacion.FechaSalida = fechaSalida;
            //            detalleReservacion.TotalPago = tipoHabitacionBusiness.ObtenerTipoHabitacion(habitacionPosibilidad.TipoHabitacion.IdTipoHab).Tarifa;

            //            reservacion.IdHabitacion = habitacionPosibilidad.IdHabitacion;
            //            reservacion.DetalleReservacion = detalleReservacion;
            //            Session["reservacion"] = reservacion;
            //            Response.Redirect("RegistroReservacion.aspx");

            //        }
            //        else
            //        {
            //            Label1.Text = "Sorry but your reservation can not be processed";
            //        }//Else
            //    }//If
            //    else
            //    {
            //        Label1.Text = "Fechas Incorrectas, por favor ingreselas en orden";
            //    }
            //}
            //catch (FormatException)
            //{
            //    Label1.Text = "Ingrese los parametros correctos por favor";
            //}//Catch 
        }//Button
    }

}